﻿using Hardware.Reactor.Base.Model;
using Hardware.Reactor.Base.Setting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Hardware.Reactor.Base
{
    public interface ITempReader
    {
        /// <summary>
        /// 表示是否初始化
        /// </summary>
        bool Initialized { get; }
        /// <summary>
        /// 连接状态
        /// </summary>
        bool Connected { get; }
        /// <summary>
        /// 运行消息
        /// </summary>
        string Message { get; }
        /// <summary>
        /// 运行消息的观察者
        /// </summary>
        IObservable<string> MessageObservable { get; }//观察者模式，去观察这个message。一旦message的内容发生改变，会有一系列的回调函数，订阅了MessageObservable。本质上和事件的委托是一样的
        /// <summary>
        /// 采集到的温度值
        /// </summary>
        Temperature Temperature { get; }

        //连接的通讯模式；
        bool Init(IReactorConfigProvider provider, ConnectionMode connectionMode=ConnectionMode.串口);//初始化传了些参数进来，


        /// <summary>
        /// 检测连接状态
        /// </summary>
        /// <returns></returns>
        bool CheckConnection();
        /// <summary>
        /// 关闭硬件
        /// </summary>
        void Close();
        /// <summary>
        /// 模拟
        /// </summary>
        void StartTest();

    }
}
